软件应用 | 用Rmarkdown写毕业论文
The following article is from 统计之都 Author 张桐川
本文转载自公众号统计之都
作者:张桐川,R语言爱好者,cosx三年水友,中国科学技术大学本硕,澳洲格里菲斯博士生,鹰派,佛系,入关人。
博士生涯终于走到了最后一步了。这次全程用 R 和 Rmarkdown 相关的包完整写完了论文,现在总结一下个人经验和踩过的坑,希望给后来人提供参考经验,同时安利一下 Rmarkdown 这个提高生产力的工具。
选择 Rmarkdown 的理由
图表要编号,并经常需要在文中交叉引用 引用文献,文中和文尾的参考文献格式需要注意 目录,图和表的目录 页眉页脚,字体字号行间距,标题副标题大小等等
用 Rmarkdown 写论文
准备工作
首先我们需要安装 R 和 Rstudio 以及相关的包,具体包会在下面每一小节分别介绍。除此之外还需要 git/github 对文本源文件做版本控制,一个文本编辑器(我用的 sublime text),以及用 Zotero 作为文献库管理软件。
其次,毕业论文包含很多材料,我们将创建一个项目文件夹来管理图片,数据,论文文本,引用文献记录 (bib) 等资料。这个论文项目可以保存在本地和在线保存在 github,从而实现备份和跨电脑工作的目的。
论文框架
.
├── 01-chap1.Rmd
├── 02-chap2.Rmd
├── 03-chap3.Rmd
├── 04-conclusion.Rmd
├── 05-appendix.Rmd
├── 99-references.Rmd
├── bib
│ └── thesis.bib
├── _book
│ ├── thesis.pdf
│ └── thesis.tex
├── _bookdown.yml
├── chemarr.sty
├── csl
│ └── apa.csl
├── data
│ └── flights.csv
├── figure
│ ├── reed.jpg
│ └── subdivision.pdf
├── index.Rmd
├── prelims
│ ├── 00-abstract.Rmd
│ └── 00--prelim.Rmd
├── reedthesis.cls
├── template.tex
└── thesisdown_demo.Rproj
作图
专业的作图是学术写作的灵魂。如何用图来简明扼要地传达信息是现代科研工作的基本功。
因为主要用R做数据分析,我选择的R绘图包是大名鼎鼎的 ggplot2。在此推荐的另一个包是patchwork(https://patchwork.data-imaginist.com/): 它采用简单的语法实现将多个ggplot图拼接成大图。其他类似功能的包有 cowplot, gridExtra,但实际体验还是patchwork更为优雅强大。
制表
制表用的 kable: rmarkdown引擎knitr自带。配合的包有 kableextra(https://cran.r-project.org/web/packages/kableExtra/vignettes/awesome_table_in_html.html)。可以实现表的标题,脚注,按行列分组等等功能。包的说明书写得非常详细,需要功能的时候对着查即可。
文献引用
Zotero(https://www.zotero.org/), zotero是在线文献管理工具,具体工作原理是创建账号之后就拥有了在线的文献库。装了zotero浏览器插件设置好之后看到文章即可将文献一键纳入收藏。这比起曾经用过的mendeley等工具方便了不少。而在R里也有相应的包与之匹配,也就是citr。
citr(https://github.com/crsh/citr)包的作用是在Rstudio里直接连zotero库就能直接插文献了。全程不用手动编辑.bib库或者手动维护引用索引。添加引用的完整过程就是:看论文->浏览器中用zotero将论文添加到库->在Rstudio里将光标定位到需要插入引用的地方,用citr插件的"insert citation"连接zotero库,插入添加的文献。
值得一提的是在Rstudio 1.4预览版中,Zotero管理的文献库将与Rstudio有更好的整合。无需安装额外包和配置即可在Rstudio里插入Zotero库中的文献,详情可参考官方文档(https://blog.rstudio.com/2020/11/09/rstudio-1-4-preview-citations/)。
最终效果展示:
论文repo:https://github.com/tcgriffith/thesisdown_demo
gitbook在线电子书版pdf版:https://github.com/tcgriffith/thesisdown_demo/blob/main/_book/thesis.pdf
下面聊聊我在用Rmarkdown写毕业论文中碰到的实际问题。
如何与word选手合作
我碰到的第一个问题是:使用Rmarkdown写论文,如何与不懂Rmarkdown的合作者进行有效协作。更核心的是word强大的追踪修改的功能无法替代。
经过沟通尝试之后我最终做法还是在Rmarkdown里写好一个章节,直接复制Rmarkdown源文本进word发给导师,改完之后传回来我再改改复制进Rmarkdown生成pdf。
非R语言生成图片的显示问题
插入图片的markdown语法为 ![](path/of/image)。但是在论文中的图需要控制长宽,需要有引用标签和标题等,最合适的办法是使用rmarkdown的knitr包自带函数include_graphics()。这样可以用与R生成的图一样的设置来精确控制图片显示。示例代码为:
```{r, out.width = "400px"}
knitr::include_graphics("path/to/image.png")
```
ggplot作图时标签,标注中的特殊字符
主要是公式的上标下标,在stack overflow上有丰富的案例可以参考。主要使用的是R的expression函数。
例如在图中添加斯皮尔曼相关系数的注释(https://stackoverflow.com/questions/27303019/ggplot-annotate-with-greek-symbol-and-1-apostrophe-or-2-in-between-text):
df <- data.frame(x = rnorm(10), y = rnorm(10))
temp <- expression("Spearman's"~rho == 0.34)
ggplot(df, aes(x = x, y = y)) +
geom_point() +
annotate("text", x = mean(df$x), y = mean(df$y),
parse = T, label = as.character(temp))
效果:
后记
所谓工欲善其事必先利其器,科研工作者也需要像手艺人一样对工具仔细挑选和精研。但学校课程很少专门开课传授这方面的知识。本文介绍用Rmarkdown准备毕业论文以作为word, LaTeX以外的第三种选择,希望能对有类似需求的同路人有所帮助。
最后需要强调的是,工具只是“术”,要提高学术论文质量还是得修炼内功,安利一篇写好英语科技论文的诀窍(https://sparks-lab.org/blog/recipe-sci-paper/),祝诸君在学术之路上武运昌隆。
点击阅读原文,进入CCAD数据库
·END·
星标⭐我们不迷路!
想要文章及时到,文末“在看”少不了!
点击搜索你感兴趣的内容吧
往期推荐
数据Seminar
这里是大数据、分析技术与学术研究的三叉路口
文 | 统计之都
推荐 | 青酱
欢迎扫描👇二维码添加关注